package org.biz.modules.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.biz.common.Result;
import org.biz.modules.entity.*;

import java.util.List;

/**
 * @author zf
 * @ClassName SysUserService
 */
public interface SysUserService extends IService<SysUser> {

    /**
    *分页列表
    *
     * @param page 分页模型
     * @param queryParams 查询参数
     * @return com.baomidou.mybatisplus.core.metadata.IPage<org.biz.modules.entity.SysUser>
     **/
    IPage<SysUser> getPage(Page<SysUser> page, QueryParams queryParams);

    /**
    *
    *获取专科和基地列表
     *@param departName 专科名称
     * @return java.util.List<org.biz.modules.entity.SysItem>
     **/
    List<SysItem> getDepartmentList(String departName);

    /**
     *
     *获取城市和医院列表
     *@param cityName 城市名称
     *@param name 医院名称
     * @return java.util.List<org.biz.modules.entity.SysItem>
     **/
    List<SysHospital> getHospitalList(String cityName,String name);


    /**
    *更新截止日期
    *
     * @param deadline 截止日期
     * @return int
     **/
    int updateDeadline(String deadline);

    /**
     *是否可编辑
     *
     * @return true-可编辑，false-不可编辑
     *
     * @param userId*/
    boolean isUpdate(String userId);

    /**
     *是否为管理员
     * @param userId 登录人ID
     * @return true-是，false-不是
     **/
    boolean isAdmin(String userId);

    /**
     *学员再认证填报-学习进度
     * @param userId 登录人ID
     * @return 返回四个填报项文本、已填写数量、总数
     **/
    List<SysDocTitle> getDocTitleList(String userId);

    /**
     *学员再认证填报-填报内容
     * @param titleId 填报项id
     * @param userId 登录人ID
     * @return 返回填报内容文本和填报值
     **/
    List<SysDocUser> getTitleText(String titleId, String userId);

    /**
    *新增或更新填空内容
    *
     * @param doc 用户填空内容
     * @param userId 登录人ID
     * @return boolean
     **/
    Result<?> saveOrUpdate(List<SysDocUser> doc, String userId);


    /**
    *获取各状态的护士人数
    *
     **/
    UserCountVO getCountByStatus(String name);

    /**
     * 获取学习记录
     * @param idNumber
     */
    List<LearningRecord> getLearningRecord(String idNumber);

    /**
     * 设为看完
     * @param idNumber
     * @param subjectId
     */
    void setSubjectFinish(String idNumber, Long subjectId);

    /**
     *
     *是否完成基本信息、承诺书、汇总表、填报
     **/
    StatusVO getFinishStatusByUserId(String userId);

    Result<?> isEdit(String userId);

    String getDeadLine();

    List<DepartmentUserCount> getDepartmentUserCount();

    List<CityUserCount> getCityUserCount();

    List<SysUser> getExportList(QueryParams queryParams);

    List<String> getCity13List();
}
